from PySide6.QtWidgets import QPushButton
from PySide6.QtCore import Qt, QSize
from PySide6.QtGui import QIcon, QFont
import os

class CustomPushButton(QPushButton):
    """自定义按钮类，提供更多的样式和功能选项"""
    
    def __init__(self, text="", icon=None, parent=None):
        super().__init__(text, parent)
        
        # 设置图标（如果提供）
        if icon:
            # 确保icons文件夹存在
            os.makedirs("icons", exist_ok=True)
            
            # 设置默认图标文件路径
            default_icon = "icons/lock.png"
            
            # 检查图标文件是否存在
            if isinstance(icon, str) and not os.path.exists(icon):
                print(f"警告: 图标文件 '{icon}' 不存在，使用默认图标")
                icon = default_icon
                
                # 如果默认图标也不存在，发出警告
                if not os.path.exists(default_icon):
                    print(f"警告: 默认图标文件 '{default_icon}' 也不存在，请确保该文件存在")
            
            self.setIcon(icon)
            
        # 设置默认样式
        self.setMinimumHeight(28)
        self.setCursor(Qt.PointingHandCursor)
        
        # 设置字体
        font = self.font()
        font.setPointSize(9)
        self.setFont(font)
        
    def setIcon(self, icon):
        """设置按钮图标"""
        if isinstance(icon, str):
            # 检查图标文件是否存在
            if not os.path.exists(icon):
                print(f"警告: 图标文件 '{icon}' 不存在，使用默认图标")
                default_icon = "icons/lock.png"
                
                # 如果默认图标存在，则使用默认图标
                if os.path.exists(default_icon):
                    icon = default_icon
            
            icon = QIcon(icon)
        super().setIcon(icon)
        super().setIconSize(QSize(16, 16))
    
    def setIconSize(self, size):
        """设置图标大小"""
        if isinstance(size, int):
            size = QSize(size, size)
        super().setIconSize(size)
        
    def setFont(self, font):
        """设置按钮字体"""
        super().setFont(font)
        
    def setStyleSheet(self, styleSheet):
        """设置样式表"""
        super().setStyleSheet(styleSheet)
    
    def setPrimaryStyle(self):
        """设置主要按钮样式（突出显示）"""
        self.setStyleSheet("""
            QPushButton {
                background-color: #3498db;
                color: white;
                border: none;
                padding: 5px 15px;
                border-radius: 3px;
            }
            QPushButton:hover {
                background-color: #2980b9;
            }
            QPushButton:pressed {
                background-color: #1c6ea4;
            }
        """)
        
    def setSecondaryStyle(self):
        """设置次要按钮样式"""
        self.setStyleSheet("""
            QPushButton {
                background-color: #ecf0f1;
                color: #2c3e50;
                border: 1px solid #bdc3c7;
                padding: 5px 15px;
                border-radius: 3px;
            }
            QPushButton:hover {
                background-color: #d6dbdf;
            }
            QPushButton:pressed {
                background-color: #bdc3c7;
            }
        """)
        
    def setDangerStyle(self):
        """设置危险按钮样式"""
        self.setStyleSheet("""
            QPushButton {
                background-color: #e74c3c;
                color: white;
                border: none;
                padding: 5px 15px;
                border-radius: 3px;
            }
            QPushButton:hover {
                background-color: #c0392b;
            }
            QPushButton:pressed {
                background-color: #a73225;
            }
        """)
        
    def setSuccessStyle(self):
        """设置成功按钮样式"""
        self.setStyleSheet("""
            QPushButton {
                background-color: #2ecc71;
                color: white;
                border: none;
                padding: 5px 15px;
                border-radius: 3px;
            }
            QPushButton:hover {
                background-color: #27ae60;
            }
            QPushButton:pressed {
                background-color: #219653;
            }
        """) 